home *** CD-ROM | disk | FTP | other *** search
- /
- / REALLY FAST scroll-up of the screen for the Atari ST.
- / Used when "screen direct" is selected.
- /
- / Base address of screen is passed as a parameter
- /
- .globl do_scroll_
- .shri
- do_scroll_:
- movea.l 4(sp),a0 / Get logbase
- movem.l ${a3-a5,d3-d7},-(sp) / Save registers used by C
- /
- moveq.l $63,d0 / 64 * 10 * 48 = 30720 bytes to go
- lea 1280(a0),a0 / Point to second line of screen
- scroll:
- movem.l (a0)+,${a1-a5,d1-d7} / Get 48 bytes...
- movem.l ${a1-a5,d1-d7},-1328(a0) / ... and move them up
- movem.l (a0)+,${a1-a5,d1-d7} / Do that 10 times in line for speed
- movem.l ${a1-a5,d1-d7},-1328(a0)
- movem.l (a0)+,${a1-a5,d1-d7}
- movem.l ${a1-a5,d1-d7},-1328(a0)
- movem.l (a0)+,${a1-a5,d1-d7}
- movem.l ${a1-a5,d1-d7},-1328(a0)
- movem.l (a0)+,${a1-a5,d1-d7}
- movem.l ${a1-a5,d1-d7},-1328(a0)
- movem.l (a0)+,${a1-a5,d1-d7}
- movem.l ${a1-a5,d1-d7},-1328(a0)
- movem.l (a0)+,${a1-a5,d1-d7}
- movem.l ${a1-a5,d1-d7},-1328(a0)
- movem.l (a0)+,${a1-a5,d1-d7}
- movem.l ${a1-a5,d1-d7},-1328(a0)
- movem.l (a0)+,${a1-a5,d1-d7}
- movem.l ${a1-a5,d1-d7},-1328(a0)
- movem.l (a0)+,${a1-a5,d1-d7}
- movem.l ${a1-a5,d1-d7},-1328(a0)
- dbra d0,scroll / 64 times to go
-
- moveq.l $31,d0 / 32 * 10 * 4 bytes to clear
- clear: clr.l -(a0) / 10 times for speed
- clr.l -(a0)
- clr.l -(a0)
- clr.l -(a0)
- clr.l -(a0)
- clr.l -(a0)
- clr.l -(a0)
- clr.l -(a0)
- clr.l -(a0)
- clr.l -(a0)
- dbra d0,clear
- /
- movem.l (sp)+,${a3-a5,d3-d7} / Restore C registers
- rts
-